"""
4、带锁的门：
在走廊上有n个带锁的门，从1到n依次编号。最初所有的门都是关着的。
我们从门前经过n次，每次都从1号门开始。
在第i次经过时（i = 1,2，..., n)我们改变i的整数倍号锁的状态；
如果门是关的，就打开它；如果门是打开的，就关上它。
在最后一次经过后，哪些门是打开的，哪些门是关上的？有多少打开的门？
"""


def openDoor(n):
    if n is None or n <= 0:
        return
    doorList = [0] * (n + 1)  # 初始化门关着的状态为0
    for i in range(1, len(doorList)):
        j = i
        while j <= n:
            doorList[j] = 1 - doorList[j]  # 改变门锁状态
            j += i  # 直接＋i用以改变i的整数倍门锁状态
    # 用enumerate函数列出门的状态和下标，找出状态x为1的下标i
    output = [i for i, x in enumerate(doorList) if x == 1]
    return output


z = input("输入门的数量：")
print("开着的门：", openDoor(int(z)))
